﻿
namespace QuizApp.Web
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // The MetadataTypeAttribute identifies MateriaMetadata as the class
    // that carries additional metadata for the Materia class.
    [MetadataTypeAttribute(typeof(Materia.MateriaMetadata))]
    public partial class Materia
    {

        // This class allows you to attach custom attributes to properties
        // of the Materia class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class MateriaMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private MateriaMetadata()
            {
            }

            public int idMateria { get; set; }

            public string Nome { get; set; }

            public EntityCollection<Questao> Questao { get; set; }

            [Include]
            public EntityCollection<Topico> Topico { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ProvaMetadata as the class
    // that carries additional metadata for the Prova class.
    [MetadataTypeAttribute(typeof(Prova.ProvaMetadata))]
    public partial class Prova
    {

        // This class allows you to attach custom attributes to properties
        // of the Prova class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ProvaMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ProvaMetadata()
            {
            }

            public Nullable<int> Acertos { get; set; }

            public Nullable<DateTime> DataProva { get; set; }

            public Nullable<int> Erros { get; set; }

            public int idProva { get; set; }

            public int idUsuario { get; set; }

            public EntityCollection<ProvaQuestao> ProvaQuestao { get; set; }

            public Nullable<int> Total { get; set; }

            public Usuario Usuario { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies ProvaQuestaoMetadata as the class
    // that carries additional metadata for the ProvaQuestao class.
    [MetadataTypeAttribute(typeof(ProvaQuestao.ProvaQuestaoMetadata))]
    public partial class ProvaQuestao
    {

        // This class allows you to attach custom attributes to properties
        // of the ProvaQuestao class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ProvaQuestaoMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private ProvaQuestaoMetadata()
            {
            }

            public int idProva { get; set; }

            public int idQuestao { get; set; }

            public int idUsuario { get; set; }

            public Prova Prova { get; set; }

            public Questao Questao { get; set; }

            public int Resultado { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies QuestaoMetadata as the class
    // that carries additional metadata for the Questao class.
    [MetadataTypeAttribute(typeof(Questao.QuestaoMetadata))]
    public partial class Questao
    {

        // This class allows you to attach custom attributes to properties
        // of the Questao class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class QuestaoMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private QuestaoMetadata()
            {
            }

            public Nullable<DateTime> DataCriacao { get; set; }

            public Nullable<int> idMateria { get; set; }

            public int idQuestao { get; set; }

            public Nullable<int> idSubTopico { get; set; }

            public Nullable<int> idTopico { get; set; }

            public Nullable<int> idUsuario { get; set; }

            public Materia Materia { get; set; }

            public EntityCollection<ProvaQuestao> ProvaQuestao { get; set; }

            public EntityCollection<QuestaoAlternativa> QuestaoAlternativa { get; set; }

            public QuestaoSimples QuestaoSimples { get; set; }

            public SubTopico SubTopico { get; set; }

            public Nullable<int> TipoQuestao { get; set; }

            public Topico Topico { get; set; }

            public Usuario Usuario { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies QuestaoAlternativaMetadata as the class
    // that carries additional metadata for the QuestaoAlternativa class.
    [MetadataTypeAttribute(typeof(QuestaoAlternativa.QuestaoAlternativaMetadata))]
    public partial class QuestaoAlternativa
    {

        // This class allows you to attach custom attributes to properties
        // of the QuestaoAlternativa class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class QuestaoAlternativaMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private QuestaoAlternativaMetadata()
            {
            }

            public Nullable<int> Gabarito { get; set; }

            public int idAlternativa { get; set; }

            public int idQuestao { get; set; }

            public Questao Questao { get; set; }

            public string Texto { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies QuestaoSimplesMetadata as the class
    // that carries additional metadata for the QuestaoSimples class.
    [MetadataTypeAttribute(typeof(QuestaoSimples.QuestaoSimplesMetadata))]
    public partial class QuestaoSimples
    {

        // This class allows you to attach custom attributes to properties
        // of the QuestaoSimples class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class QuestaoSimplesMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private QuestaoSimplesMetadata()
            {
            }

            public int Gabarito { get; set; }

            public int idQuestao { get; set; }

            public Questao Questao { get; set; }

            public string Texto { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies QuestaoSimplesViewMetadata as the class
    // that carries additional metadata for the QuestaoSimplesView class.
    [MetadataTypeAttribute(typeof(QuestaoSimplesView.QuestaoSimplesViewMetadata))]
    public partial class QuestaoSimplesView
    {

        // This class allows you to attach custom attributes to properties
        // of the QuestaoSimplesView class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class QuestaoSimplesViewMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private QuestaoSimplesViewMetadata()
            {
            }

            public Nullable<DateTime> DataCriacao { get; set; }

            public int Gabarito { get; set; }

            public Nullable<int> idMateria { get; set; }

            public int idQuestao { get; set; }

            public Nullable<int> idSubTopico { get; set; }

            public Nullable<int> idTopico { get; set; }

            public Nullable<int> idUsuario { get; set; }

            public string Nome { get; set; }

            public string Subtopico { get; set; }

            public string Texto { get; set; }

            public Nullable<int> TipoQuestao { get; set; }

            public string Topico { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies SubTopicoMetadata as the class
    // that carries additional metadata for the SubTopico class.
    [MetadataTypeAttribute(typeof(SubTopico.SubTopicoMetadata))]
    public partial class SubTopico
    {

        // This class allows you to attach custom attributes to properties
        // of the SubTopico class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class SubTopicoMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private SubTopicoMetadata()
            {
            }

            public int idMateria { get; set; }

            public int idSubTopico { get; set; }

            public int idTopico { get; set; }

            public string Nome { get; set; }

            public EntityCollection<Questao> Questao { get; set; }

            public Topico Topico { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies TopicoMetadata as the class
    // that carries additional metadata for the Topico class.
    [MetadataTypeAttribute(typeof(Topico.TopicoMetadata))]
    public partial class Topico
    {

        // This class allows you to attach custom attributes to properties
        // of the Topico class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TopicoMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private TopicoMetadata()
            {
            }

            public int idMateria { get; set; }

            public int idTopico { get; set; }

            public Materia Materia { get; set; }

            public string Nome { get; set; }

            public EntityCollection<Questao> Questao { get; set; }

            [Include]
            public EntityCollection<SubTopico> SubTopico { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies UsuarioMetadata as the class
    // that carries additional metadata for the Usuario class.
    [MetadataTypeAttribute(typeof(Usuario.UsuarioMetadata))]
    public partial class Usuario
    {

        // This class allows you to attach custom attributes to properties
        // of the Usuario class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class UsuarioMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private UsuarioMetadata()
            {
            }

            public Nullable<DateTime> DataCriacao { get; set; }

            public string Email { get; set; }

            public int idUsuario { get; set; }

            public string Nome { get; set; }

            public string Password { get; set; }

            public EntityCollection<Prova> Prova { get; set; }

            public EntityCollection<Questao> Questao { get; set; }
        }
    }
}
